/**
 * Object EDate()
 * 
 * @super AInput
 * @constructor
 * @author Hermann D. Schimpf <hschimpf@gschimpf.com>
 * @license http://opensource.org/licenses/gpl-2.0.php
 * @date 2010-07-30
 * @version 0.1.0
 */
function EDate() {
	/* ejecutamos el constructor */
	return this.__construct();
}
/* heredamos las propiedades */
EDate.prototype = new AInput;
/**
 * Constructor de la clase
 */
EDate.prototype.__construct = function() {
	/* llamamos al constructor del padre */
	var obj = this.construct();
	/* seteamos el tipo de cursor */
	obj.setCursor('pointer');
	/* seteamos el formato por defecto */
	obj.setFormat('YYYY-MM-DD');
	/* retornamos el objeto */
	return obj;
};
/**
 * Retorna la definicion de la clase
 * 
 * @return String Definicion de la clase
 */
EDate.prototype.toString = function() {
	/* retornamos la definicion de la clase en un string */
	return "[EDate " + this.getName() | this.getID() + "]";
};
/**
 * Asigna el formato de fecha a utilizar
 * 
 * @param String Formato de Fecha (ej: YYYY-MM-DD)
 */
EDate.prototype.setFormat = function(format) {
	/* TODO: Agregar las funciones para el formato automatico */
	this.setValue(format);
};
/**
 * Valida que la fecha ingresada sea valida
 * 
 * @throws InvalidDateException Exception si la fecha no es valida
 */
EDate.prototype.validate = function() {
	/* obtenemos la fecha ingresada */
	var date = new String(this.getValue());
	/* obtenemos la fecha actual */
	var RealFecha = new Date();
	/* obtenemos el ano */
	var ano = new String(date.substring(date.lastIndexOf('-') + 1, date.length));
	/* obtenemos el mes */
	var mes = new String(date.substring(date.indexOf('-') + 1, date.lastIndexOf('-')));
	/* obtenemos el dia */
	var dia = new String(date.substring(0, date.indexOf('-')));
	/* verificamos si el ano es valido */
	if (isNaN(ano) || ano.length < 4 || parseFloat(ano) < 1900)
		/* salimos con una excepcion */
		throw new InvalidDateException('El ano ingresado no es valido');
	/* verificamos si el mes es valido */
	if (isNaN(mes) || parseFloat(mes) < 1 || parseFloat(mes) > 12)
		/* salimos con una excepcion */
		throw new InvalidDateException('El mes ingresado no es valido');
	/* verificamos si el dia es valido y concuerda con el mes */
	if (isNaN(dia) || parseInt(dia, 10) < 1 || parseInt(dia, 10) > 31 || (mes == 4 || mes == 6 || mes == 9 || mes == 11 || mes == 2) && (mes == 2 && dia > 28 || dia > 30))
		/* salimos con una excepcion */
		throw new InvalidDateException('El dia ingresado no es valido');
};